// 分页类型
export interface Paging<T> {
    last: boolean;      // 是否最后一页
    list: T[];          // 数据
    page: number;       // 当前页
    paging: boolean;    // 是否分页
    total: number;      // 页数量
    totalPage: number;  // 每页大小
    summary?: any;      // 附加
    info?: any;         // 详情
}

// 页数数据
export interface PageProps {
    page: number;
    pageSize: number;
    order: "DESC" | "ASC";
    orderBy: string;
}

// 数据加载状态
export enum PagingStatusEnum {
    success,
    err,
    doing,
}

export function defaultPaging<T>(): Paging<T> {
    return {
        info: {},
        summary: {},
        last: false,
        list: [],
        page: 1,
        paging: true,
        total: 0,
        totalPage: 1,
    }
}

export function listPaging<T>(list: T[]): Paging<T> {
    const pageData = defaultPaging<T>();
    if (!list) return pageData;
    pageData.list = list;
    pageData.totalPage = 1;
    pageData.paging = false;
    pageData.last = true;
    pageData.total = list.length;
    return pageData;
}

